/**
 * Redux 状态管理工具，引入Redux时，需要调用connect方法把状态和组件邦在一起
 */

 import React, { Component } from 'react';
 import {connect} from 'react-redux';
 import {bindActionCreators} from 'react-redux';

 class App extends React.Component {
     render() {}
 }

 //mappStateToProps是一个函数，可以建立组件和状态之间的映射关系
 function mappStateToProps(state) {
     // 假设App的状态对应state.app
     return state.app
 }

 // 建立组件与dispatch的关系，使组件具备通过dispatch来派发状态的能力
 function mapDispatchToProps(dispatch) {
     return bindActionCreators(action, dispatch)
 }

 // 把App组件与Redux邦在一起
 export default connect(mappStateToProps, mapDispatchToProps)(App);

 const connect = (mappStateToProps, mapDispatchToProps) => {
     return wrapperComponent => class extends Component {
         render(){
             // 将redux与组件建立联系
             return <wrapperComponent/>
         }
     }
 }

 // 总结： connect装饰器从实现和调用方式上，其实也是一个高阶组件